package co.edu.usbcali.sisgpim.dataaccess.daoFactory;

import co.edu.usbcali.sisgpim.dataaccess.dao.*;


/**
 * Factory for Data Access Objects Strategy The DAO pattern can be made highly flexible
 * by adopting the Abstract Factory [GoF] and the Factory Method [GoF] patterns.
 * When the underlying storage is not subject to change from one implementation to another,
 * this strategy can be implemented using the Factory Method pattern to produce a number of DAOs needed by the application.
 * This class is a Factory Method pattern
 *
 * @author Zathura Code Generator http://code.google.com/p/zathura/
 */
public class XMLHibernateDaoFactory {
    private static XMLHibernateDaoFactory instance = null;

    private XMLHibernateDaoFactory() {
    }

    /**
    *
    * @return HibernateDaoFactory
    */
    public static XMLHibernateDaoFactory getInstance() {
        if (instance == null) {
            instance = new XMLHibernateDaoFactory();
        }

        return instance;
    }

    /**
    * This method instantiates the IAccesoriosDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IAccesoriosDAO implementation
    */
    public IAccesoriosDAO getAccesoriosDAO() {
        return new AccesoriosDAO();
    }

    /**
    * This method instantiates the IEquiposLaboratorioDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IEquiposLaboratorioDAO implementation
    */
    public IEquiposLaboratorioDAO getEquiposLaboratorioDAO() {
        return new EquiposLaboratorioDAO();
    }

    /**
    * This method instantiates the IEstadosImplementosDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IEstadosImplementosDAO implementation
    */
    public IEstadosImplementosDAO getEstadosImplementosDAO() {
        return new EstadosImplementosDAO();
    }

    /**
    * This method instantiates the IMarcasDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IMarcasDAO implementation
    */
    public IMarcasDAO getMarcasDAO() {
        return new MarcasDAO();
    }

    /**
    * This method instantiates the IPrestamosEquiposDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IPrestamosEquiposDAO implementation
    */
    public IPrestamosEquiposDAO getPrestamosEquiposDAO() {
        return new PrestamosEquiposDAO();
    }

    /**
    * This method instantiates the IReservasEquiposDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IReservasEquiposDAO implementation
    */
    public IReservasEquiposDAO getReservasEquiposDAO() {
        return new ReservasEquiposDAO();
    }

    /**
    * This method instantiates the ISancionesDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ISancionesDAO implementation
    */
    public ISancionesDAO getSancionesDAO() {
        return new SancionesDAO();
    }

    /**
    * This method instantiates the ITiposEquipoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ITiposEquipoDAO implementation
    */
    public ITiposEquipoDAO getTiposEquipoDAO() {
        return new TiposEquipoDAO();
    }

    /**
    * This method instantiates the ITiposUsuarioDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ITiposUsuarioDAO implementation
    */
    public ITiposUsuarioDAO getTiposUsuarioDAO() {
        return new TiposUsuarioDAO();
    }

    /**
    * This method instantiates the IUsuariosDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IUsuariosDAO implementation
    */
    public IUsuariosDAO getUsuariosDAO() {
        return new UsuariosDAO();
    }
}
